<?php
#
#
# Copyright TEDECO, 2009. http://tedeco.fi.upm.es
#
# This file is part of kumenya.
#
# Kumenya is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Kumenya is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
#
#
#
?>
<?php
class Loan
{
	static public function getFields ($table = false, $isNew = false) {
		$dbManager = new DBManager();
		$fields = $dbManager->MultipleTablesFields("ShowLoanFields", Library, LoansTable, $table);
		if (!$isNew && !$table) {
			$identifier = Interfaz::CreateField(Uid,UID,NO);
			foreach ($identifier as $key => $vector)
				$fields[$key] = array_merge($vector, $fields[$key]);
		}
		
 		return $fields;
	}

	static public function getSanctionFields ($table = false, $isNew = false) {
		$fields = self::getFields();
		$fields = Interfaz::DeleteFields($fields, State);
		$TotalCost = Interfaz::CreateField(Sanction, Entire, YES);
		
		$fields = Interfaz::AddFields($fields, $TotalCost);
 		return $fields;
	}

	static public function Register($filledFields) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('NewLoan',Library,$filledFields);
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;
	}

	static public function SearchCriterias () {
		$dbManager = new DBManager();
		$criterias = $dbManager->SearchCriterias ('SearchLoans',Library);
		if (empty($criterias)) {
			Interfaz::Error($dbManager->GetError());
		}
		return $criterias;
	}	

	static public function Search ($criterias) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('SearchLoans',Library, $criterias);
		if (!is_array($table))
			return FALSE;
		return $table;
	}

	static public function SeeDetails ($identifier) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('LoanDetail',Library, $identifier);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		if (is_array($table))
			return $table[0];
		else
			return $table;
	}

	static public function Modify ($filledFields) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('EditLoan',Library,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function Complete ($identifier) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('ReturnOfDocument',Library,$identifier);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function Extend ($identifier) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('LoanExtention',Library,$identifier);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function Remove ($identifier) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('CancelLoan',Library,$identifier);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;	
	}

	static public function SanctionsSearchCriterias () {
		$dbManager = new DBManager();
		$table = Person::SearchCriterias ();
		if (!is_array($table))
			return FALSE;
		$table = array_merge (array(Uid => UID), $table);
		$table[Type] = array_merge (array(Uid => UID), $table[Type]);
		return $table;
	}

	static public function SanctionsSearch ($criterias) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('LoansWithPersonSanction',Library, $criterias);
		if (!is_array($table))
			return FALSE;
		return $table;
	}

	static public function SanctionDetails ($identifier) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('LoanWithSanctionDetails',Library, $identifier);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		if (is_array($table))
			return $table[0];
		else
			return $table;
	}

	static public function PaySanction ($identifier) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('PaySanction',Accountancy,$identifier);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;	
	}

}

?>